home *** CD-ROM | disk | FTP | other *** search
- ;/* Split.c - AmigaMail SplitName() example. Compiled with SAS/C 5.10a.
- lc -cfis -v -d0 -b0 -j73 Split.c
- blink from Split.o to Split lib lib:amiga.lib ; if you don't have pragmas
- quit
- * Tuesday, 16-Jul-91 12:15:49, Ewout
- *
- *
- */
- /* (c) Copyright 1991 Commodore-Amiga, Inc. All rights reserved.
- The information contained herein is subject to change without notice,
- and is provided "as is" without warranty of any kind, either expressed
- or implied. The entire risk as to the use of this information is
- assumed by the user.
- */
-
- #include <exec/memory.h>
- #include <dos/dosextens.h>
- #include <dos/rdargs.h>
-
- #include <clib/exec_protos.h>
- #include <clib/dos_protos.h>
-
- /* def PRAGMAS if you have them */
- /* #define PRAGMAS */
- #ifdef PRAGMAS
- #include <pragmas/exec_pragmas.h>
- #include <pragmas/dos_pragmas.h>
- #else
- struct ExecBase *SysBase;
- struct DosLibrary *DOSBase;
-
- #endif
-
- #define BUFFERSIZE 128
-
- VOID main(VOID);
-
- VOID
- main(VOID)
- {
- #ifdef PRAGMAS
- struct DosLibrary *DOSBase;
-
- #endif
- struct RDArgs *readargs;
- LONG rargs[2];
- UBYTE *filename, *buffer;
- ULONG buffersize;
- WORD position = 0;
- LONG vargs[4];
-
- #ifndef PRAGMAS
- /* set up SysBase */
- SysBase = (*((struct Library **) 4));
- #endif
-
- /* Fail silently if < 37 */
- if (DOSBase = (struct DosLibrary *) OpenLibrary("dos.library", 37))
- {
-
- /* See the DOS Autodocs for more information about ReadArgs() */
- if (readargs = ReadArgs("FILE/A,BUFFERSIZE/A/N", rargs, NULL))
- {
- filename = (UBYTE *) rargs[0];
- buffersize = *((LONG *) rargs[1]);
- if (buffersize < 1 || buffersize > 4096)
- buffersize = BUFFERSIZE;
-
- if (buffer = AllocMem(buffersize, MEMF_CLEAR))
- {
- position = SplitName(filename, ':', buffer, position, buffersize);
-
- vargs[0] = position;
- vargs[1] = (LONG) buffer;
- VFPrintf(Output(), "Devicename: position: %ld Buffer: %s\n", vargs);
-
- if (position == -1)
- position = 0;
-
- do
- {
- position =
- SplitName(filename, '/', buffer, position, buffersize);
- vargs[0] = position;
- vargs[1] = (LONG) buffer;
- VFPrintf(Output(),
- "Path component: position: %ld Buffer: %s\n",
- vargs);
- } while (position != -1);
- FreeMem(buffer, buffersize);
- }
- FreeArgs(readargs);
-
- }
- else
- PrintFault(IoErr(), NULL);
- CloseLibrary((struct Library *) DOSBase);
- }
- }
-